// 通用返回行为 mixin
export default {
    methods: {
        // navigateBack: 优先使用 route.query.backTo（支持 JSON 或字符串），
        // 否则如果 history 可回退则使用 this.$router.back(), 否则使用替代路径替换
        navigateBack(fallback = { path: '/' }) {
            try {
                const q = (this.$route && this.$route.query) || {}
                if (q.backTo) {
                    // 支持传入 JSON 编码的对象或简单路径字符串
                    try {
                        const decoded = decodeURIComponent(q.backTo)
                        const parsed = JSON.parse(decoded)
                        // 如果解析为对象，直接 replace
                        if (parsed && typeof parsed === 'object') {
                            this.$router.replace(parsed)
                            return
                        }
                        // 否则作为 path 字符串处理
                        this.$router.replace({ path: String(parsed) })
                        return
                    } catch (e) {
                        // 不是 JSON，当作 path 字符串
                        this.$router.replace({ path: q.backTo })
                        return
                    }
                }

                // 如果浏览器历史长度大于1，则回退到上一个页面
                if (window && window.history && window.history.length > 1) {
                    this.$router.back()
                    return
                }

                // 否则用传入的 fallback 替换当前路由（默认 '/'）
                this.$router.replace(fallback)
            } catch (err) {
                // 出现异常时兜底替换
                try { this.$router.replace(fallback) } catch (e) { /* ignore */ }
            }
        }
    }
}
